/*jslint */
/*global Service, Request */

// getTimestamp
// getId
// getMethod
// getRandom
// getFormat
// getVersion



/**
 * Общий класс для сервисов ВКонтакте.
 *
 * @class
 * @name Service.Vk.Request
 * @extends Request
 * @method Service.Vk.Request#getTimestamp
 * @method Service.Vk.Request#getId
 * @method Service.Vk.Request#getMethod
 * @method Service.Vk.Request#getRandom
 * @method Service.Vk.Request#getFormat
 * @method Service.Vk.Request#getVersion
 */
Service.Vk.Request = Request.$extend({

    /**
     * Конструктор класса.
     *
     * @public
     * @function
     * @name Service.Vk.Request#$init
     * @param {Object} options Параметры запроса.
     * @return {void}
     */
    $init : function (options) {
        "use strict";
        // Время запроса.
        this.registerAsInteger('timestamp', {
            'required' : false,
            'unsigned' : true,
            'defaults' : Math.round(Number(new Date()) / 1000)
        });
        // Идентификатор приложения.
        this.registerAsIdentifier('api_id', {
            'required' : true,
            'unsigned' : true
        });
        //
        this.registerAsString('method', {
            'required'   : true,
            'emptyAllow' : false
        });
        this.registerAsInteger('random', {
            'required' : true,
            'unsigned' : true
        });
        this.registerAsString('format', {
            'required'   : false,
            'emptyAllow' : false,
            'defaults'   : 'json'
        });
        this.registerAsString('v', {
            'required'   : false,
            'emptyAllow' : false,
            'defaults'   : '3.0'
        });
        // Вызываем конструктор
        // родительского класса.
        this.$super(options);
    },

    /**
     * @public
     * @function
     * @name Service.Vk.Request#getTimestamp
     * @return {String|null}
     */
    getTimestamp : function () {
        'use strict';
        return this.getItem('timestamp') || null;
    },

    /**
     * @public
     * @function
     * @name Service.Vk.Request#getId
     * @return {String|null}
     */
    getId : function () {
        'use strict';
    },

    /**
     * @public
     * @function
     * @name Service.Vk.Request#getMethod
     * @return {String|null}
     */
    getMethod : function () {
        'use strict';
    },

    /**
     * @public
     * @function
     * @name Service.Vk.Request#getRandom
     * @return {String|null}
     */
    getRandom : function () {
        'use strict';
    },

    /**
     * @public
     * @function
     * @name Service.Vk.Request#getFormat
     * @return {String|null}
     */
    getFormat : function () {
        'use strict';
    },

    /**
     * @public
     * @function
     * @name Service.Vk.Request#getVersion
     * @return {String|null}
     */
    getVersion : function () {
        'use strict';
    }

});